#include<vector>
#include<fstream>
#include<cmath>
#include<iomanip>

struct Point
{
   double x, y;
   
   Point(double x_, double y_): x(x_), y(y_)
   {
   
   }
   
   Point(): x(0), y(0)
   {
    
   }
};


Point operator-(const Point& a, const Point& b )
{
   return Point(a.x - b.x, a.y - b.y);
}
   
double vector_multiply(const Point& vec1, const Point& vec2)
{
   return vec1.x * vec2.y - vec2.x * vec1.y;
}

double oriented_triangle_area(const Point& a, const Point& b, const Point& c)
{
   return vector_multiply(b - a, c - a) / 2; 
}

double polygon_area(const std::vector<Point>& points)
{
   double sum = 0;
   Point p(0, 0);
   sum += oriented_triangle_area(p, points[points.size() - 1], points[0]);
   for (size_t i = 0; i < points.size() - 1; i++)
   {
      sum += oriented_triangle_area(p, points[i], points[i + 1]);
   }
   return std::abs(sum);
}

int main()
{
   std::ifstream in("in.txt");
   std::ofstream out("out.txt");
   double x, y;
   std::vector<Point> points;
   while(in >> x >> y)
   {
      points.push_back(Point(x, y));
   }
   out << std::setprecision(10) << polygon_area(points);
   return 0;
}

